package cn.lixu.feighClient;

import cn.lixu.domain.User;
import cn.lixu.hystrix.UserFeignClientFallbackFactory;
import org.springframework.cloud.openfeign.FeignClient;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestMapping;

/**
 * @author LiXu
 * @date 2022/08/19 0019 11:55:51
 * 编写Feign接口，提供服务调用
 */
@FeignClient(name = "user-server",fallbackFactory = UserFeignClientFallbackFactory.class) // 指定需要调用的服务的应用名称
@RequestMapping("/user")
public interface UserFeighClient {
    /**
     * @author lixu
     * @data 2022/08/19 0019 14:12:25
     * @param: null
     * @return: null
     * - OpenFeign会帮助我们创建接口实现类，我们在启动类上的
     * - 在实现类中
     * - 根据指定的服务应用名称+当前接口路径+参数使用RestTemplate进行服务调用
     * <p>
     * - 接口编写规范
     * - 方法名称必须跟被代理服务接口方法名称一致
     * - 请求路径必须跟被代理服务接口一致
     * - 参数与返回值必须跟被代理服务接口一致
     **/
    @GetMapping("/getById/{id}")
    User getById(@PathVariable("id") Long id);
}
